package com.zjcloud.web.controller.dashboard;

import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.zjcloud.common.annotation.Log;
import com.zjcloud.common.core.controller.BaseController;
import com.zjcloud.common.core.domain.AjaxResult;
import com.zjcloud.common.enums.BusinessType;
import com.zjcloud.system.domain.SysNotice;
import com.zjcloud.common.core.domain.entity.SysUser;
import com.zjcloud.common.core.domain.entity.SysDept;
import com.zjcloud.system.service.ISysDeptService;
import com.zjcloud.system.service.ISysNoticeService;
import com.zjcloud.system.service.ISysUserService;

/**
 * 仪表板控制器
 * 
 * @author zjcloud
 * @date 2024-01-01
 */
@RestController
@RequestMapping("/dashboard")
public class DashboardController extends BaseController
{
    @Autowired
    private ISysUserService userService;
    
    @Autowired
    private ISysDeptService deptService;
    
    @Autowired
    private ISysNoticeService noticeService;
    
    /**
     * 获取仪表板统计数据
     * @return 统计数据
     */
    @GetMapping("/data")
    public AjaxResult getDashboardData()
    {
        Map<String, Object> data = new HashMap<>();
        
        // 获取用户总数
        int userCount = userService.selectUserList(new SysUser()).size();
        data.put("userCount", userCount);
        
        // 获取部门总数
        int deptCount = deptService.selectDeptList(new SysDept()).size();
        data.put("deptCount", deptCount);
        
        // 获取通知公告总数
        int noticeCount = noticeService.selectNoticeList(new SysNotice()).size();
        data.put("noticeCount", noticeCount);
        
        // 模拟课程数量（可根据实际业务调整）
        data.put("courseCount", 15);
        
        return AjaxResult.success(data);
    }
    
    /**
     * 获取系统统计信息
     * @return 系统统计数据
     */
    @GetMapping("/stats")
    public AjaxResult getSystemStats()
    {
        Map<String, Object> stats = new HashMap<>();
        
        // 在线用户数（模拟数据）
        stats.put("onlineUsers", 5);
        
        // 今日访问量（模拟数据）
        stats.put("todayVisits", 128);
        
        // 系统运行天数（模拟数据）
        stats.put("runningDays", 365);
        
        // CPU使用率（模拟数据）
        stats.put("cpuUsage", 45.6);
        
        // 内存使用率（模拟数据）
        stats.put("memoryUsage", 68.2);
        
        return AjaxResult.success(stats);
    }
}